home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Utilities / Winter Shell 1.0d2 / Source / Libraries / WindowLib / WindowLib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-16  |  6.4 KB  |  187 lines  |  [TEXT/KAHL]

  1. #pragma once
  2.  
  3. #include "ArrayListLib.h"
  4. #include "EventLib.h"
  5. #include "FileLib.h"
  6. #include "LLHandleLib.h"
  7.  
  8. /* window layers */
  9. typedef enum {
  10.     WIN_LAYER_NONE = 0,
  11.     WIN_LAYER_FIRST = 1,
  12.     WIN_LAYER_DOCUMENT = 1,
  13.     WIN_LAYER_FLOAT,
  14.     WIN_LAYER_MODAL,
  15.     WIN_LAYER_LAST
  16. } WindowLayerType;
  17.  
  18. /* special window kinds */
  19. typedef enum {
  20.     WIN_KIND_EXTRA = userKind + 1,
  21.     WIN_KIND_DOCUMENT,
  22.     WIN_KIND_LAST
  23. } WindowKindType;
  24.  
  25. /* Structure of a 'WIND' resource. Other than the lack of a trailing
  26.     itemsID field, this structure is identical to the DialogTemplate
  27.     structure given in IM-1, p430. */
  28. typedef struct {
  29.     Rect boundsRect;
  30.     short procID;
  31.     Boolean visible;
  32.     Boolean filler1;
  33.     Boolean goAwayFlag;
  34.     Boolean filler2;
  35.     long refCon;
  36.     Str255 title;
  37. } WindowTemplate;
  38.  
  39. /* structure containing additional information about a window */
  40. typedef struct {
  41.     LLType                next;            /* next window in layer */
  42.     WindowPtr            window;        /* window to which data belong */
  43.     WindowLayerType    layer;        /* window's layer */
  44.     ArrayListHandle    tablist;        /* objects to switch to when tab key is pressed */
  45.     EventType            *objects;    /* objects registered in window */
  46.     EventType            *focus;        /* object with input focus */
  47.     EventIDType            item;            /* id of last object clicked */
  48.     Boolean                visible;        /* true if window was visible on suspend */
  49.     Boolean                dialog;        /* true if window is also a dialog */
  50.     Rect                    dfltpos;        /* default position of window */
  51.     short                    icon;            /* icon to display in top left corner (alerts) */
  52.     void                    *filter;        /* filter function (modal dialogs) */
  53.     void                    *filterData;/* application defined data for modal dialogs */
  54.     void                    *data;        /* application defined data */
  55. } WindowExtraType, *WindowExtraPtr, **WindowExtraHandle;
  56.     
  57. /* validation */
  58. Boolean WinValid(WindowPtr window);
  59.  
  60. /* extra data */
  61. WindowExtraPtr WinExtraPtr(WindowPtr window);
  62. WindowExtraHandle WinExtraHandle(WindowPtr window);
  63. void WinExtraSet(WindowPtr window, WindowExtraHandle extra);
  64.  
  65. /* application defined data */
  66. void *WinData(WindowPtr window);
  67. void WinDataSet(WindowPtr window, void *data);
  68.  
  69. /* properties and attributes */
  70.  
  71. Boolean WinVisible(WindowPtr window);
  72. Boolean WinVisibleFully(WindowPtr window);
  73. short WinKind(WindowPtr window);
  74. void WinKindSet(WindowPtr window, short kind);
  75.  
  76. Boolean WinIsSystem(WindowPtr window);
  77. Boolean WinIsDialog(WindowPtr window);
  78. Boolean WinIsUser(WindowPtr window);
  79. Boolean WinIsModal(WindowPtr window);
  80. Boolean WinIsFloat(WindowPtr window);
  81.  
  82. Boolean WinHasExtra(WindowPtr window);
  83. Boolean WinHasGoAway(WindowPtr window);
  84. Boolean WinHasGrow(WindowPtr window);
  85. Boolean WinHasDrag(WindowPtr window);
  86. Boolean WinHasZoom(WindowPtr window);
  87. Boolean WinHasFocus(WindowPtr window);
  88.  
  89. void WinTitle(WindowPtr window, CStr255 title);
  90. void WinTitleSet(WindowPtr window, const char *title);
  91.  
  92. Boolean WinModalHasFocus(void);
  93.  
  94. /* window object lists */
  95. EventType *WinObjects(WindowPtr window);
  96. EventType *WinFocus(WindowPtr window);
  97. void WinFocusSet(WindowPtr window, EventObjectType object);
  98. void WinRegister(WindowPtr window, EventObjectType object, 
  99.     const EventTableType *table);
  100. void WinUnregister(WindowPtr window, EventObjectType object);
  101. void WinRegisterID(WindowPtr window, EventObjectType object, EventIDType id);
  102. EventObjectType WinRegisteredID(WindowPtr window, EventIDType id);
  103. Boolean WinHasTabList(WindowPtr window);
  104. void WinTabRegister(WindowPtr window, EventObjectType object);
  105. void WinTabUnregister(WindowPtr window, EventObjectType object);
  106. void WinTab(WindowPtr window);
  107. const EventTableType *WinObjectTable(WindowPtr window, EventObjectType object);
  108. void WinObjectTableSet(WindowPtr window, EventObjectType object,
  109.     const EventTableType *table);
  110.  
  111. /* window layers */
  112. WindowLayerType WinLayer(WindowPtr window);
  113. void WinLayerSet(WindowPtr window, WindowLayerType layer);
  114.  
  115. /* accessing the list of windows */
  116. WindowPtr WinFirst(WindowLayerType layer);
  117. WindowPtr WinFirstVisible(WindowLayerType layer);
  118. WindowPtr WinNext(WindowPtr window);
  119. WindowPtr WinNextVisible(WindowPtr window);
  120. WindowPtr WinFirstVisibleNonFloat(void);
  121. WindowPtr WinNextVisibleNonFloat(WindowPtr window);
  122.  
  123. /* displaying and selecting */
  124. void WinHilite(WindowPtr window, Boolean hilite);
  125. void WinShow(WindowPtr window);
  126. void WinHide(WindowPtr window);
  127. void WinSelect(WindowPtr window);
  128.  
  129. /* rectangles */
  130. void WinRectangles(WindowPtr window,
  131.     Rect *structureRect,
  132.     Rect *contentRect,
  133.     Rect *dragRect,
  134.     Rect *newRect);
  135. void WinNewRect(WindowPtr window, Rect *newRect);
  136. void WinDragRect(WindowPtr window, Rect *dragRect);
  137. void WinPortRect(WindowPtr window, Rect *portRect);
  138. void WinContentRect(WindowPtr window, Rect *contentRect);
  139. void WinStructureRect(WindowPtr window, Rect *structureRect);
  140.  
  141. /* resizing windows */
  142. void WinSizeRect(WindowPtr window, Rect *minmax);
  143. void WinSizePreferred(WindowPtr window, short *width, short *height);
  144. void WinResize(WindowPtr window, short dh, short dv);
  145.  
  146. /* drawing */
  147. void WinDrawGrowIcon(WindowPtr window);
  148.  
  149. /* positioning and sizing */
  150. Boolean WinCouldDrag(WindowPtr window, const Rect *bounds);
  151. Boolean WinCanDrag(WindowPtr window);
  152. void WinStagger(WindowPtr window, Boolean constantSize,
  153.     short width, short height);
  154. void WinPosition(DialogPtr dlg, short h, short v);
  155. void WinMove(WindowPtr window, short left, short top);
  156. void WinSize(WindowPtr window, short width, short height);
  157. void WinDrag(WindowPtr window, Point where);
  158. void WinGrow(WindowPtr window, Point where);
  159.  
  160. /* zooming and saving and restoring window positions */
  161. void WinZoom(WindowPtr window, short part);
  162. void WinZoomState(WindowPtr window, WStateData *zoomState);
  163. void WinZoomStateSet(WindowPtr window, const WStateData *zoomState);
  164. void WinZoomPrepare(WindowPtr window);
  165. void WinZoomReset(WindowPtr window);
  166. void WinZoomRemember(WindowPtr window);
  167. void WinZoomRead(WindowPtr window, short id);
  168. void WinZoomWrite(WindowPtr window, short id);
  169. void WinZoomSave(WindowPtr window, FileType *fp, short id);
  170. void WinZoomRestore(WindowPtr window, FileType *fp, short id);
  171.  
  172. /* event handling */
  173. void WinActivate(WindowPtr window, Boolean active);
  174. void WinUpdate(WindowPtr window);
  175. void WinSuspend(void);
  176. void WinResume(void);
  177. const EventTableType *WinEventTable(void);
  178. void WinEventTableRegister(void);
  179.  
  180. /* window creation and destruction */
  181. void WinUninitialize(WindowPtr window);
  182. void WinInitialize(WindowPtr window, WindowLayerType layer);
  183. WindowPtr WinAdjustTemplate(WindowTemplate *wind, WindowLayerType *layer);
  184. WindowPtr WinGet(short id);
  185. WindowPtr WinBegin(short procID, Boolean goAwayFlag);
  186. void WinEnd(WindowPtr window);
  187.